package com.wang.common.types;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public interface Parser<T> {
	 /**
     * 58
     * @param json JSONObject
     * @return 
     * @throws JSONException
     */
	public abstract T parse(String content) throws JSONException;
	
    /**
     * 解析标准形式的JSON数据
     * @param json JSONObject
     * @return 
     * @throws JSONException
     */
	public abstract T parse(JSONObject json) throws JSONException;
	
	/**
     * 解析数组形式的JSON列表数据
     * @param array 返回输的的JSONArray
     * @return 解析出数据的列表
     */
    public ArrayList<T> parse(JSONArray array) throws JSONException;
    
    /**
     * 解析数组形式的JSON数据
     * @param keyArray 键的数据
     * @param valueArray 值的数组
     * @return 解析出的数据类型<T extends BaseType>
     */
    public abstract T parseArray(JSONArray keyArray, JSONArray valueArray) throws JSONException;
    
    /**
     * 解析数组形式的JSON列表数据
     * @param array 返回输的的JSONArray
     * @return 解析出数据的列表
     */
    public ArrayList<T> parseGroupArray(JSONArray array) throws JSONException;
	
	
}
